use reinterpret_cast with queue processing
authortsteven4 <tsteven4@gmail.com>
Sat, 14 Jul 2018 15:06:27 +0000 (09:06 -0600)
committertsteven4 <tsteven4@gmail.com>
Sat, 14 Jul 2018 15:06:27 +0000 (09:06 -0600)
instead of a static cast to a void pointer followed
by a static cast to a Waypoint*.

arcdist.cc
igc.cc
mapsource.cc
psitrex.cc

index 91e1688a763e55ce213180be70f4ba611c1ee33f..098b69c489bb8ac8347446c23e9cab5525db5f98 100644 (file)
@@ -47,8 +47,7 @@ void ArcDistanceFilter::arcdist_arc_disp_wpt_cb(const Waypoint* arcpt2)
 #else
     queue* elem, *tmp;
     QUEUE_FOR_EACH(&waypt_head, elem, tmp) {
-      void* vwaypointp = static_cast<void*>(elem);
-      Waypoint* waypointp = static_cast<Waypoint*>(vwaypointp);
+      Waypoint* waypointp = reinterpret_cast<Waypoint*>(elem);
 #endif
       double dist;
       extra_data* ed;
diff --git a/igc.cc b/igc.cc
index c5532acad08b5f767d3792395217528371f75a8b..a3216935bf81eb30266cb5440743896b34864362 100644 (file)
--- a/igc.cc
+++ b/igc.cc
@@ -861,8 +861,6 @@ static void wr_track()
 {
   const route_head* pres_track;
   const route_head* gnss_track;
-  const queue* elem;
-  const queue* tmp;
   int time_adj;
 
   // Find pressure altitude and GNSS altitude tracks
@@ -883,12 +881,11 @@ static void wr_track()
       printf(MYNAME ": adjusting time by %ds\n", time_adj);
     }
     // Iterate through waypoints in both tracks simultaneously
-    queue* melem;
-    queue* mtmp;
-    QUEUE_FOR_EACH(&gnss_track->waypoint_list, melem, mtmp) {
+    const queue* elem;
+    const queue* tmp;
+    QUEUE_FOR_EACH(&gnss_track->waypoint_list, elem, tmp) {
       // FIXME(NEW_Q): the excessive casting of the iterators is gross. Rethink.
-      void* vwaypointp = static_cast<void*>(melem);
-      Waypoint* wpt = static_cast<Waypoint*>(vwaypointp);
+      const Waypoint* wpt = reinterpret_cast<const Waypoint*>(elem);
       double pres_alt = interpolate_alt(pres_track, wpt->GetCreationTime().toTime_t() + time_adj);
       wr_fix_record(wpt, pres_alt, wpt->altitude);
     }
@@ -896,18 +893,20 @@ static void wr_track()
     if (pres_track) {
       // Only the pressure altitude track was found so generate fix
       // records from it alone.
-      queue* melem;
-      queue* mtmp;
-      QUEUE_FOR_EACH(&pres_track->waypoint_list, melem, mtmp) {
-        void* vwaypointp = static_cast<void*>(melem);
-        Waypoint* wpt = static_cast<Waypoint*>(vwaypointp);
+      const queue* elem;
+      const queue* tmp;
+      QUEUE_FOR_EACH(&pres_track->waypoint_list, elem, tmp) {
+        const Waypoint* wpt = reinterpret_cast<const Waypoint*>(elem);
         wr_fix_record(wpt, wpt->altitude, unknown_alt);
       }
     } else if (gnss_track) {
       // Only the GNSS altitude track was found so generate fix
       // records from it alone.
+      const queue* elem;
+      const queue* tmp;
       QUEUE_FOR_EACH(&gnss_track->waypoint_list, elem, tmp) {
-        wr_fix_record((Waypoint*) elem, (int) unknown_alt, (int)((Waypoint*) elem)->altitude);
+        const Waypoint* wpt = reinterpret_cast<const Waypoint*>(elem);
+        wr_fix_record(wpt, unknown_alt, wpt->altitude);
       }
     } else {
       // No tracks found so nothing to do
index 190deb78b24a1813ec790721f3ec46612c74634a..312bebc36cfd53e41ffa7071b1acd1036b6024b9 100644 (file)
@@ -139,8 +139,7 @@ mps_find_wpt_q_by_name(const queue* whichQueue, const QString& name)
   queue* elem, *tmp;
 
   QUEUE_FOR_EACH(whichQueue, elem, tmp) {
-    void* vwaypointp = static_cast<void*>(elem);
-    Waypoint* waypointp = static_cast<Waypoint*>(vwaypointp);
+    Waypoint* waypointp = reinterpret_cast<Waypoint*>(elem);
     if (waypointp->shortname == name) {
       return waypointp;
     }
index e462073fc775b068ff9a54d8272c6126835731e6..cfb99088accc75a759bb699bf7297434273892de 100644 (file)
@@ -458,8 +458,7 @@ psit_routehdr_w(gbfile* psit_file, const route_head* rte)
     unsigned int rte_datapoints = 0;
     queue *elem, *tmp;
     QUEUE_FOR_EACH(&rte->waypoint_list, elem, tmp) {
-      void* vwaypointp = static_cast<void*>(elem);
-      Waypoint* testwpt = static_cast<Waypoint*>(vwaypointp);
+      Waypoint* testwpt = reinterpret_cast<Waypoint*>(elem);
       if (rte_datapoints == 0) {
         uniqueValue = testwpt->GetCreationTime().toTime_t();
       }
@@ -601,8 +600,7 @@ psit_trackhdr_w(gbfile* psit_file, const route_head* trk)
       unsigned int trk_datapoints = 0;
       QUEUE_FOR_EACH(&trk->waypoint_list, elem, tmp) {
         if (trk_datapoints == 0) {
-          void* vwaypointp = static_cast<void*>(elem);
-          Waypoint* testwpt = static_cast<Waypoint*>(vwaypointp);
+          Waypoint* testwpt = reinterpret_cast<Waypoint*>(elem);
           uniqueValue = testwpt->GetCreationTime().toTime_t();
         }
         trk_datapoints++;